package com.hsurosy.hsuchain.nft.sms;

import com.hsurosy.hsuchain.nft.lock.DistributeLock;
import com.hsurosy.hsuchain.nft.sms.response.SmsSendResponse;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Mock短信服务实现
 *
 * @Author Hsu琛君珩
 * @Date 2024-10-05 5:09
 * @Description
 * @Version: v1.0.0
 */
@Slf4j
@Data
public class MockSmsServiceImpl implements SmsService {

    /**
     * 日志记录器，用于记录日志信息。
     */
    private static final Logger logger = LoggerFactory.getLogger(MockSmsServiceImpl.class);

    /**
     * 模拟发送短信
     * 使用分布式锁，确保同一手机号在高并发情况下不会多次发送短信。
     *
     * @param phoneNumber 手机号
     * @param code 验证码
     * @return SmsSendResponse 模拟发送短信的结果，始终返回成功。
     */
    @DistributeLock(scene = "SEND_SMS", keyExpression = "#phoneNumber")
    @Override
    public SmsSendResponse sendMsg(String phoneNumber, String code) {
        // 创建一个SmsSendResponse对象，模拟发送成功
        SmsSendResponse smsSendResponse = new SmsSendResponse();
        smsSendResponse.setSuccess(true);

        // 返回模拟的短信发送结果
        return smsSendResponse;
    }
}
